#include <iostream>
#include "ShareMem.hpp"

int main()
{
    cout << "time:" << GetCurrTime() << endl;
    cout << "self pid: " << getpid() << endl;
    // 首先创建共享内存
    shm.CreateShm();

    // sleep(3);
    //  关联
    shm.AttachShm();
    cout << "server attach done" << endl;

    //获取共享内存原属性
    shm.ShmMeta();

    // sleep(3);

    // 之后服务端打开管道为了读
    //gPipe.OpenPipeForRead();

    // 进行IPC
    // struct data *image = (struct data *)shm.GetAddr();
    // while (true)
    // {
    //     // 先读取管道
    //     if (gPipe.Wait() != 0)
    //     {
    //         cout << image->status << endl;
    //         cout << image->lasttime << endl;
    //         cout << image->image << endl;
    //         // 不让server端进行等待
    //         // sleep(1);

    //         // 读完消息修改状态为 过期
    //         strcpy(image->status, "过期");
    //     }
    //     else 
    //     {
    //         break;
    //     }
    // }

    // char* strinfo = (char*)shm.GetAddr();
    // //printf("server 虚拟地址：%p\n", strinfo);
    // while (true)
    // {
    //     cout << strinfo << endl;
    //     sleep(1);
    // }

    // 去关联
    shm.DetachShm();
    cout << "server detach done" << endl;
    sleep(3);

    // 删除共享内存
    shm.DeleteShm();
    cout << "server delete done" << endl;
    sleep(3);

    // 删除管道 管道自动删除 调用析构

    return 0;
}

// int main()
// {

//     cout << "k: 0x" << ToHex(k) << endl;

//     // 2.创建共享内存
//     // 不存在创建 存在出错返回

//     sleep(3);

//     // 3.共享内存挂接到自己的地址空间中
//     cout << "attach done " << (long long)ret << endl;
//     sleep(3);

//     // 这里进行通信

//     // 去关联

//     sleep(3);
//     // n.删除共享内存

//     return 0;
// }
